package com.tedu.api.io;

import com.sun.xml.internal.bind.v2.runtime.output.StAXExStreamWriterOutput;

import java.io.*;
import java.util.Scanner;

    /**
      * 练习：做一个笔记本程序
      * 需求：程序开始之后，要求用户控制台下输入文件名，假设a.txt
      *      然后针对文件进行读写操作，用户一行行输入文本[控制台]，
      *      保存a.txt文件中
      *      用户可以一直输入文件，直到用户输入“退出或者exit”程序结束
      *      保存a.txt生成在  API项目下
      */
    public class Note {
    //主方法：直接写文件     相对路径a.txt   根级路径
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
    //1.创建扫描类--控制台--用户输出：文件名
    //扫描器类---功能：控制卡住---等待用户输入：文本
    Scanner input=new Scanner(System.in);
    System.out.println("请输入文件名：");
    //nextLine() 获取从控制台输入一行文本内容
    String text=input.nextLine();
    //System.out.println(text);
    //2.控制台输入文件名---通过输出流---写出--一行一行【高级流】./API/a.txt
    FileOutputStream fos=
    new FileOutputStream("API"+ File.separator+text);
    //高级流--转换流：指定编码集---缓冲流：高效--字符输出流
    OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF8");
    BufferedWriter bw=new BufferedWriter(osw);
    PrintWriter pw=new PrintWriter(bw);
    //3.控制台输入：文本内容--对每行文本内容写出
    System.out.println("请开始输入内容【exit/退出】：");
    //3.1用户---一直输入：直到用户输入“exit/退出”结束程序
    String line=null;//先定义 死循环外--①赋值②减少内存开始
    while(true){
    line=input.nextLine();    //从控制台获取一行文本
    //控制台输入文本--判断，如果输入文本：exit或者退出【退出】
    if(line.equals("退出")||line.equals("exit")){
    break;//打断--程序跳出
    }
    pw.println(line);
    //写出line文本
    }
     System.out.println("拜拜~~，请查看API项目目录下");
    pw.close();
    //关闭高级流---缓冲字符流：【缓冲区】关闭流---调用flush
    //针对传输：文本
    }
}
